package com.mjf.spark.day02

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * 从集合中创建RDD指定分区
 *  -默认分区规则
 *      取决于分配给应用的CPU核数
 *
 *  -指定分区数
 *      详情看源码
 *
 */
object Spark04_Partition_mem {
  def main(args: Array[String]): Unit = {

    // 创建SparkConf配置文件
    val conf = new SparkConf().setMaster("local[*]").setAppName("Spark03_Partition_default")
    // 创建SparkContext对象
    val sc = new SparkContext(conf)

    // 通过集合创建RDD
    // 集合中4个数据---默认分区数---实际输出8个分区---分区中的数据分布
    // 1号分区->1, 3号分区->2, 5号分区->3, 7号分区->4
    val rdd1: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4))

    // 查看分区效果
    println(rdd1.partitions.size)
//    rdd1.saveAsTextFile("D:\\code\\spark\\output")

    // 集合中4个数据---设置分区数为4---实际输出8个分区---分区中的数据分布
    // 0号分区->1, 1号分区->2, 2号分区->3, 3号分区->4
    val rdd2: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4), 4)

    // 查看分区效果
    println(rdd2.partitions.size)
    rdd2.saveAsTextFile("D:\\code\\spark\\output")


    // 关闭连接
    sc. stop()

  }
}
